package com.ice.day726.thread;

/**
 * @Author ice2020x
 * @Date 2022-08-07 19:44
 * @Description: 给你一个由 n 个正整数组成的数组 nums 。
 * 你可以对数组的任意元素执行任意次数的两类操作：
 * 1、如果元素是 偶数 ，除以 2
 * 例如，如果数组是 [1,2,3,4] ，那么你可以对最后一个元素执行此操作，使其变成 [1,2,3,2]
 * 2、如果元素是 奇数 ，乘上 2
 * 例如，如果数组是 [1,2,3,4] ，那么你可以对第一个元素执行此操作，使其变成 [2,2,3,4]
 * 数组的 偏移量 是数组中任意两个元素之间的 最大差值 。
 * 返回数组在执行某些操作之后可以拥有的 最小偏移量
 */

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

class Solution {

    /* Write Code Here */
    public int minimumDeviation(int[] nums) {
        Queue<Integer> queue = new ArrayDeque<>();
        int mi = Integer.MAX_VALUE;
        for (int x : nums) {
            if(x%2!=0){
                x<<=1;
            }
            queue.add(x);
            mi = Math.min(mi,x);
        }
        int ans = Integer.MAX_VALUE;
        while (true){
            int x = queue.poll();
            ans = Math.min(ans,x-mi);
            if(x%2!=0){
                break;
            }
            x>>=1;
            queue.add(x);
            mi = Math.min(x,mi);
        }
        return ans;
    }
}

public class Main5 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int res;

        int nums_size = 0;
        nums_size = in.nextInt();
        int[] nums = new int[nums_size];
        for (int nums_i = 0; nums_i < nums_size; nums_i++) {
            nums[nums_i] = in.nextInt();
        }

        if (in.hasNextLine()) {
            in.nextLine();
        }

        res = new Solution().minimumDeviation(nums);
        System.out.println(String.valueOf(res));

    }
}